package com.example.demo.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.common.R;
import com.example.demo.entity.doris.Book;
import com.example.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/books")
public class BookController {

    @Autowired
    private BookService bookService;    /**
     * 根据ISBN查询图书
     * @param isbn ISBN编号
     * @return 图书信息
     */
    @GetMapping("/{isbn}")
    public R<Book> getBookByIsbn(@PathVariable String isbn) {
        Book book = bookService.getBookByIsbn(isbn);
        if (book == null) {
            return R.error("图书不存在");
        }
        return R.success(book);
    }    /**
     * 根据书名搜索图书
     * @param title 书名关键字
     * @return 图书列表
     */
    @GetMapping("/search/title")
    public R<List<Book>> searchByTitle(@RequestParam String title) {
        List<Book> books = bookService.searchByTitle(title);
        return R.success(books);
    }    /**
     * 根据作者搜索图书
     * @param author 作者关键字
     * @return 图书列表
     */
    @GetMapping("/search/author")
    public R<List<Book>> searchByAuthor(@RequestParam String author) {
        List<Book> books = bookService.searchByAuthor(author);
        return R.success(books);
    }

    /**
     * 多条件分页搜索图书
     * @param page 页码，默认为1
     * @param size 每页大小，默认为10
     * @param title 书名关键字，可选
     * @param author 作者关键字，可选
     * @param publisher 出版社关键字，可选
     * @return 分页结果
     */
    @GetMapping("/search")
    public R<Page<Book>> searchBooks(
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "10") Integer size,
            @RequestParam(required = false) String title,
            @RequestParam(required = false) String author,
            @RequestParam(required = false) String publisher) {
        
        Page<Book> result = bookService.searchBooks(page, size, title, author, publisher);
        return R.success(result);
    }    /**
     * 使用Doris全文索引进行模糊搜索
     * @param keyword 搜索关键词
     * @param page 页码，默认为1
     * @param size 每页大小，默认为10
     * @return 分页结果
     */
    @GetMapping("/search/fulltext")
    public R<Page<Book>> searchByFullText(
            @RequestParam String keyword,
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "10") Integer size) {
        Page<Book> result = bookService.searchByFullText(keyword, page, size);
        return R.success(result);
    }
}
